﻿using System;
using System.Timers;

namespace SimbaRGVMonitor.Common.Interop
{
    public class TimeTickManager : IDisposable
    {
        public TimeTickManager()
        {
            InitializeSettings();
        }

        //====================================================================================================
        //以上是类型构造函数
        //----------------------------------------------------------------------------------------------------
        //以下是类型字段
        //====================================================================================================

        private readonly Timer timer = new Timer();

        //====================================================================================================
        //以上是类型字段
        //----------------------------------------------------------------------------------------------------
        //以下是类型属性
        //====================================================================================================

        public double Interval
        {
            get { return timer.Interval; }
            set { timer.Interval = value; }
        }

        //====================================================================================================
        //以上是类型属性
        //----------------------------------------------------------------------------------------------------
        //以下是类型事件及触发函数
        //====================================================================================================

        public event EventHandler TimeTicked;
        private void WhenTimerElapsed(object sender, ElapsedEventArgs e)
        {
            TimeTicked.TriggerEvent(this);
        }

        //====================================================================================================
        //以上是类型事件及触发函数
        //----------------------------------------------------------------------------------------------------
        //以下是初始化设置
        //====================================================================================================

        private void InitializeSettings()
        {
            timer.Interval = 1000;
            timer.AutoReset = true;
            timer.Elapsed += WhenTimerElapsed;  
        }

        //====================================================================================================
        //以上是初始化设置
        //----------------------------------------------------------------------------------------------------
        //以下是开始及停止
        //====================================================================================================

        public void Start()
        {
            timer.Start();
        }

        public void Stop()
        {
            timer.Stop();
        }

        //====================================================================================================
        //以上是开始及停止
        //----------------------------------------------------------------------------------------------------
        //以下是释放资源
        //====================================================================================================

        public void Dispose()
        {
            timer.Dispose();
        }
    }
}
